Tkinter

旧版的 Tkinter
使用 tkinter

新版使用 tkinter.ttk
样式更贴合现代

import tkinter as tk

window

初始化窗口

window = tk.Tk()

生成主窗口

window.mainloop()

不断刷新窗口状态
*只有添加该条指令,窗口才可视

widget

顾名思义,小组件
部署在主窗口内

常用组件及方法

  • Label

    不能编辑的标签
    主要用来提示

  • Button

    可交互按钮
    可触发事件

  • Entry

    单行的文本输入

    • get()

    • delete()

      • delete(pos)

      • delete(start,end)

        从 0 开始

      • delete(0,tk.END)

        delete ALL

    • insert()

      • insert(pos, str)
  • Text

    多行的文本输入

    • get()

      • get(start,end)

        eg.
        txt_content.get(0,10)
        获取第1到第11个字符

        字符包含换行符

    • delete()

      • delete(start,end)
    • insert()

      • insert(start,end)
  • Frame

    用来承载其他组件组织窗口

common attrib 共有属性

eg.
lbl_submit = tk.Label(master = frm_main, bg = 'black', width = 10, text = "Submit")

  • master

    父组件

    eg. frm_main = tk.Frame(master=window)

  • bg

  • fg

  • width

    单位为 pixel 像素

  • height

  • borderwidth

    tk.FLAT
    tk.SUNKEN
    tk.RAISED
    tk.GROOVE
    tk.RIDGE

    显示样式

    可以用下面的字典来快速引用
    border_effects = {
      "flat": tk.FLAT,
      "sunken": tk.SUNKEN,
      "raised": tk.RAISED,
      "groove": tk.GROOVE,
      "ridge": tk.RIDGE,
    }
    eg. frm_main = tk.Frame(master=window, relief=border_effects["flat"])

  • text

    eg.

    btn_submit["text"] = "Submit"

  • image

Layout

生成的 widget 调用
合并到设置好的 master 上

*除了主窗口,其他组件都需要使用

.pack()

  • ipadx/y=

    内部间隔
    eg. ipadx = 10, ipady = 10
    内部的间隔各为10px

  • padx/y=

  • side=

    tk.LEFT/RIGHT/TOP/BOTTOM

    当前的 widget 具体停靠在那边

  • fill=

    tk.X/Y/BOTH

    在 X / Y / BOTH 方向上扩展

  • expand=

    True/False

    是否随着窗口大小变化而变化

.grid()

  • row=

    widget 所在行号,从0开始

  • column=

    widget 所在列号,从0开始

  • sticky=

    "n" "e" "s" "w"
    可自由组合

    eg.
    btn_submit.grid(sticky="ne")
    靠东北方

Event

原理为每次 mainloop() 检查是否触发了事件

bind()

全局事件

  • 两个必备参数

    • event

      事件名称,内置事件
      所有 event 的参考网址:
      https://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

    • event handler

      函数,参数为 event

      eg.
      def function(event):
      ....

command=

和按钮等绑定,单击触发

eg.
def Print():
print(btn_print["text])

btn_print = tk.Button(master=window, text="Hello World!", command=Print)

点击按钮,输出按钮的 text 属性

  • button
  • event handler

XMind: ZEN - Trial Version